Azure Functions হল একটি serverless compute সেবা যা ক্লাউডে কোড রান করানোর জন্য ব্যবহৃত হয়। এটি ছোট কোড স্নিপেট (ফাংশন) হিসাবে কাজ করে, যা নির্দিষ্ট ইভেন্ট বা ডেটা ট্রিগার হলে চালু হয়। Trigger এবং Binding হল Azure Functions-এর দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যা আপনাকে সহজেই ইভেন্ট-ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।
Trigger কী?
Trigger হল একটি নির্দিষ্ট ইভেন্ট বা অ্যাকশন, যা ফাংশনকে চালু (trigger) করে। ট্রিগারটি বিভিন্ন ধরনের হতে পারে, যেমন একটি HTTP অনুরোধ, একটি নতুন ফাইল আপলোড, একটি নির্দিষ্ট সময়, অথবা ডেটাবেসে পরিবর্তন ইত্যাদি।
Types of Triggers (ট্রিগারের ধরন)
- HTTP Trigger: যখন একটি HTTP অনুরোধ আসে, তখন ফাংশনটি চালু হয়। এটি ওয়েব API তৈরি করার জন্য খুবই জনপ্রিয়। আপনি HTTP অনুরোধে ডেটা গ্রহণ করতে পারেন এবং তার ভিত্তিতে কোনো কাজ সম্পাদন করতে পারেন।
- Timer Trigger: এই ট্রিগারটি নির্দিষ্ট সময়ে ফাংশনটি চালু করে। যেমন প্রতি 5 মিনিট পর পর ফাংশন চালানো।
- Queue Trigger: যখন একটি নতুন মেসেজ একটি Azure Queue-এ যোগ করা হয়, তখন এই ট্রিগারটি ফাংশনটি চালু করে। এটি অ্যাসিঙ্ক্রোনাস কাজের জন্য উপযুক্ত, যেমন ডেটা প্রসেসিং।
- Blob Trigger: যখন একটি নতুন ফাইল (ব্লব) Azure Storage-এ আপলোড করা হয়, তখন এই ট্রিগারটি ফাংশনটি চালু করে। এটি সাধারণত ফাইল প্রসেসিং এবং বিশ্লেষণের জন্য ব্যবহৃত হয়।
- Event Grid Trigger: এটি বিভিন্ন Azure সেবা থেকে ইভেন্ট ডেটা গ্রহণ করতে ব্যবহৃত হয়। আপনি এতে ইভেন্ট সাবস্ক্রাইব করতে পারেন এবং তারপরে ফাংশনটি ট্রিগার হয়।
- Cosmos DB Trigger: এটি Azure Cosmos DB-এ ডেটাবেস পরিবর্তন হলে ফাংশনটি চালু করে। এটি ডেটাবেস থেকে ডেটা লেগিং বা প্রসেসিং করার জন্য উপযুক্ত।
Binding কী?
Binding হল Azure Functions-এর একটি মেকানিজম যা আপনাকে সহজভাবে ইনপুট এবং আউটপুট ডেটা ব্যবহার করার সুযোগ দেয়। এটি ফাংশনের মধ্যে ডেটা পাঠানো বা গ্রহণ করা খুব সহজ করে তোলে, এবং আপনার কোডকে আরও পরিষ্কার এবং নির্ভরযোগ্য করে তোলে।
Binding দুটি প্রকারের হতে পারে: Input Binding এবং Output Binding।
Types of Bindings (বাইন্ডিংয়ের ধরন)
- Input Binding: এই বাইন্ডিংয়ের মাধ্যমে আপনি ফাংশনে ডেটা পাঠান। ফাংশন শুরু হওয়ার আগে নির্দিষ্ট সোর্স থেকে ডেটা স্বয়ংক্রিয়ভাবে পড়া হয়। উদাহরণস্বরূপ, আপনি একটি Azure Storage Blob থেকে ডেটা পড়তে পারেন।
- Output Binding: এই বাইন্ডিংয়ের মাধ্যমে আপনি ফাংশন থেকে ডেটা পাঠান। ফাংশনের আউটপুট স্বয়ংক্রিয়ভাবে নির্দিষ্ট আউটপুট সোর্সে লেখা হয়। যেমন, একটি Queue-এ মেসেজ পাঠানো বা একটি Blob-এ ফাইল লেখা।
- Trigger and Binding Combination: আপনি একাধিক ট্রিগার এবং বাইন্ডিং একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি HTTP ট্রিগার ব্যবহার করে ফাংশনকে চালু করা এবং তারপর Blob Storage-এ ডেটা লেখা।
Trigger এবং Binding ব্যবহার করে একটি উদাহরণ
ধরা যাক, আমরা একটি HTTP Trigger ব্যবহার করে একটি ফাংশন তৈরি করতে চাই, যা একটি Blob Storage-এ ডেটা লিখবে। এখানে HTTP Trigger আমাদের ফাংশনটি চালু করবে এবং Output Binding Blob Storage-এ ডেটা লেখার জন্য ব্যবহৃত হবে।
Step 1: Function.json কনফিগারেশন
{
"scriptFile": "../dist/index.js",
"bindings": [
{
"name": "req",
"type": "httpTrigger",
"direction": "in",
"authLevel": "function"
},
{
"name": "outputBlob",
"type": "blob",
"direction": "out",
"path": "my-container/{rand-guid}.txt",
"connection": "AzureWebJobsStorage"
}
]
}
- httpTrigger: এটি আমাদের ফাংশনকে HTTP অনুরোধের মাধ্যমে চালু করবে।
- outputBlob: এটি Blob Storage-এ আউটপুট লিখবে।
{rand-guid}এর মাধ্যমে ফাইলের নাম এক্সপ্রেস করা হবে যা ইউনিক হবে।
Step 2: ফাংশন কোড
module.exports = async function (context, req) {
// HTTP রিকোয়েস্ট থেকে ডেটা পাওয়া
const name = (req.query.name || (req.body && req.body.name));
if (name) {
context.bindings.outputBlob = `Hello, ${name}!`; // Blob Storage এ ডেটা লেখা
context.res = {
status: 200,
body: `Blob updated with message: Hello, ${name}!`
};
} else {
context.res = {
status: 400,
body: "Please pass a name in the query string or in the request body"
};
}
};
ব্যাখ্যা:
- HTTP Trigger: ফাংশনটি HTTP অনুরোধে চালু হবে, এবং ইউজার যদি
nameপ্যারামিটার পাঠায়, তবে সেই নামটি Blob Storage-এ লেখা হবে। - Blob Output Binding:
context.bindings.outputBlobদিয়ে ডেটা Blob Storage-এ পাঠানো হবে।
সারাংশ
Trigger এবং Binding হল Azure Functions-এর দুটি মৌলিক ধারণা, যা আপনার ফাংশনগুলিকে আরও কার্যকরী ও সহজভাবে তৈরি করতে সহায়তা করে। Trigger ব্যবহার করে আপনি নির্দিষ্ট ইভেন্ট বা অ্যাকশনগুলির উপর ভিত্তি করে ফাংশন চালু করতে পারেন, এবং Binding ব্যবহার করে আপনি ইনপুট বা আউটপুট ডেটা সহজেই পরিচালনা করতে পারেন। Azure Functions এ এই দুটি ফিচার একসাথে ব্যবহার করে আপনি serverless অ্যাপ্লিকেশন তৈরি করতে পারেন যা উচ্চ কার্যকারিতা এবং স্কেলযোগ্যতা প্রদান করে।
Read more